﻿//-----------------------------------------------------------------------
// <copyright file="Product.cs" company="Streetlight Technologies L.L.C.">
//    Copyright Streetlight Technologies L.L.C. All rights reserved.
// </copyright>
//-----------------------------------------------------------------------
namespace Streetlight.Store.Contracts
{
    using System;

    /// <summary>
    /// Provides a container for Product information.
    /// </summary>
    public class Product
    {
        /// <summary>
        /// Gets or sets the product ID.
        /// </summary>
        public string Id { get; set; }

        /// <summary>
        /// Gets or sets the name of the product.
        /// </summary>
        public string Name { get; set; }

        /// <summary>
        /// Gets or sets the product price.
        /// </summary>
        public decimal? Price { get; set; }

        /// <summary>
        /// Gets a string representing the price formatted using the currency format for the current locale.
        /// </summary>
        public string PriceText
        {
            get
            {
                return string.Format("{0:C}", Price);
            }
        }

        /// <summary>
        /// Gets or sets the packaging type code.
        /// </summary>
        public string PackagingTypeCode { get; set; }

        /// <summary>
        /// Gets or sets the product's Global Trade Item Number (GTIN)
        /// </summary>
        public string GlobalId { get; set; }

        /// <summary>
        /// Gets or sets the name of the manufacturer.
        /// </summary>
        public string Manufacturer { get; set; }

        /// <summary>
        /// Gets or sets the manufacturer's part number.
        /// </summary>
        public string PartNumber { get; set; }

        /// <summary>
        /// Gets or sets the weight of the product.
        /// </summary>
        public float? Weight { get; set; }

        /// <summary>
        /// Gets or sets the product description.
        /// </summary>
        public string Description { get; set; }

        /// <summary>
        /// Gets or sets the product status.
        /// </summary>
        public string Status { get; set; }

        /// <summary>
        /// Gets or sets the item number used for internal product tracking.
        /// </summary>
        public string ItemNumber { get; set; }

        /// <summary>
        /// Gets or sets the product length.
        /// </summary>
        public float? Length { get; set; }

        /// <summary>
        /// Gets or sets the product width.
        /// </summary>
        public float? Width { get; set; }

        /// <summary>
        /// Gets or sets the product height.
        /// </summary>
        public float? Height { get; set; }
    }
}
